// pages/design/list.js
const http = require('../../utils/http.js')
const config = require('../../utils/config.js')

Page({
  /**
   * 页面的初始数据
   */
  data: {
    designs: [], // 我的设计列表
    designsLoading: true, // 加载状态
    currentPage: 1, // 当前页码
    pageSize: 10, // 每页数量
    hasMore: true, // 是否有更多数据
    currentStatus: -1 // 当前选中的排单状态，-1表示全部
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.loadDesigns()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 如果是第一次进入页面，currentStatus为默认值-1，不需要重置
    if (this.data.currentStatus === -1) {
      this.loadDesigns()
    } else {
      // 如果已经选择了状态，重置页码并重新加载
      this.setData({
        currentPage: 1,
        hasMore: true,
        designs: []
      })
      this.loadDesigns()
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.setData({
      currentPage: 1,
      hasMore: true,
      designs: []
    })
    this.loadDesigns()
    wx.stopPullDownRefresh()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    if (this.data.hasMore) {
      this.loadMoreDesigns()
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  /**
   * 切换排单状态
   */
  switchStatus: function(e) {
    const status = parseInt(e.currentTarget.dataset.status);
    if (status === this.data.currentStatus) {
      return; // 点击的是当前已选中的状态，不做处理
    }
    
    this.setData({
      currentStatus: status,
      currentPage: 1,
      hasMore: true,
      designs: []
    });
    
    this.loadDesigns();
  },

  /**
   * 加载我的设计列表
   */
  loadDesigns: function () {
    const that = this
    this.setData({ designsLoading: true })
    console.log('开始加载设计列表数据，当前状态:', this.data.currentStatus)
    
    // 获取用户信息
    const userInfo = wx.getStorageSync('userInfo') || {}

    try {
      const params = {
        url: '/p/faceDraft/page',
        method: 'GET',
        data: {
          page: that.data.currentPage,
          limit: that.data.pageSize,
          status: 2
        },
        header: {
          'Content-Type': 'application/json',
          'Authorization': wx.getStorageSync('token')
        },
        callBack: res => {
          console.log('获取设计列表响应:', res)
          
          if (res) {
            // 处理不同的响应格式
            let designs = []
            if (res.records && Array.isArray(res.records)) {
              designs = res.records
            } else if (Array.isArray(res)) {
              designs = res
            } else if (res.data && Array.isArray(res.data)) {
              designs = res.data
            } else if (res.data && res.data.records && Array.isArray(res.data.records)) {
              designs = res.data.records
            }
            
            // 根据选中的状态进行筛选
            if (that.data.currentStatus >= 0) {
              designs = designs.filter(item => item.scheduleStatus === that.data.currentStatus)
            }
            
            console.log('处理后的设计列表:', designs)
            // 使用分页信息正确判断是否有更多数据
            const hasMoreData = res.current && res.pages && res.current < res.pages;
            
            that.setData({
              designs: designs,
              designsLoading: false,
              hasMore: hasMoreData
            })
          } else {
            console.error('响应数据为空')
            that.setData({
              designs: [],
              designsLoading: false,
              hasMore: false
            })
          }
        },
        errCallBack: err => {
          console.error('加载设计列表失败:', err)
          that.setData({
            designs: [],
            designsLoading: false,
            hasMore: false
          })
          wx.showToast({
            title: '加载失败，请重试',
            icon: 'none'
          })
        }
      }
      http.request(params)
    } catch (error) {
      console.error('加载设计列表异常:', error)
      that.setData({
        designs: [],
        designsLoading: false,
        hasMore: false
      })
      wx.showToast({
        title: '加载异常，请重试',
        icon: 'none'
      })
    }
  },

  /**
   * 加载更多设计
   */
  loadMoreDesigns: function () {
    const that = this
    if (!this.data.hasMore || this.data.designsLoading) return

    const nextPage = this.data.currentPage + 1

    try {
      const params = {
        url: '/p/faceDraft/page',
        method: 'GET',
        data: {
          page: nextPage,
          limit: that.data.pageSize,
          status: 2
        },
        header: {
          'Content-Type': 'application/json',
          'Authorization': wx.getStorageSync('token')
        },
        callBack: res => {
          console.log(res)
          if (res && res.records) {
            let newDesigns = res.records
            // 转换接口数据格式，添加资源URL前缀
            newDesigns.forEach((item, index) => {
              if (item.imageUrl) {
                item.fullImageUrl = config.domain + item.imageUrl
              }
            })
            
            // 根据选中的状态进行筛选
            if (that.data.currentStatus >= 0) {
              newDesigns = newDesigns.filter(item => item.scheduleStatus === that.data.currentStatus)
            }
            
            // 使用分页信息正确判断是否有更多数据
            const hasMoreData = res.current && res.pages && res.current < res.pages;
            
            that.setData({
              designs: [...that.data.designs, ...newDesigns],
              currentPage: nextPage,
              hasMore: hasMoreData
            })
          } else {
            that.setData({ hasMore: false })
          }
        },
        errCallBack: err => {
          console.error('加载更多设计失败:', err)
          that.setData({ hasMore: false })
          wx.showToast({
            title: '加载更多失败',
            icon: 'none'
          })
        }
      }
      http.request(params)
    } catch (error) {
      console.error('加载更多设计异常:', error)
      that.setData({ hasMore: false })
      wx.showToast({
        title: '加载异常，请重试',
        icon: 'none'
      })
    }
  },

  /**
   * 查看设计详情
   */
  viewDesign: function (e) {
    console.log(e.currentTarget.dataset)
    const designId = e.currentTarget.dataset.draftid
    if (!designId) {
      wx.showToast({
        title: '设计ID无效',
        icon: 'none'
      })
      return
    }

    wx.navigateTo({
      url: `/pages/design/detail?id=${designId}`
    })
  },

  /**
   * 返回上一页
   */
  goBack: function () {
    wx.navigateBack({
      delta: 1
    })
  },

  /**
   * 跳转到自定义页面
   */
  toCustomize: function () {
    wx.switchTab({
      url: '/pages/index/index'
    })
  },

  /**
   * 申请设计稿排单
   */
  applySchedule: function(e) {
    const draftId = e.currentTarget.dataset.draftid;
    
    // 检查是否已登录
    const token = wx.getStorageSync('token');
    if (!token) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
      // 跳转到登录页
      setTimeout(() => {
        wx.navigateTo({
          url: '/pages/login/login'
        });
      }, 1500);
      return;
    }
    
    // 显示确认弹框
    wx.showModal({
      title: '确认申请排单',
      content: '确定要申请排单吗？提交后工作人员将尽快处理您的申请。',
      confirmText: '确认申请',
      cancelText: '取消',
      success: (res) => {
        if (res.confirm) {
          // 用户点击确认，执行申请排单操作
          this.doApplySchedule(draftId, token);
        }
      }
    });
  },
  
  /**
   * 执行申请排单操作
   */
  doApplySchedule: function(draftId, token) {
    wx.showLoading({
      title: '申请排单中...',
    });
    
    try {
      const params = {
        url: '/p/faceDraft/applySchedule',
        method: 'POST',
        header: {
          'Content-Type': 'application/x-www-form-urlencoded',
          'Authorization': token
        },
        data: {
          draftId: draftId
        },
        callBack: res => {
          wx.hideLoading();
          console.log('申请排单成功:', res);
          wx.showToast({
            title: '申请排单成功',
            icon: 'success'
          });
          
          // 排单成功后重新请求列表数据，更新状态
          setTimeout(() => {
            this.setData({
              currentPage: 1,
              hasMore: true,
              designs: []
            });
            this.loadDesigns();
          }, 1500);
        },
        errCallBack: err => {
          wx.hideLoading();
          console.error('申请排单失败:', err);
          
          // 更详细的错误处理
          if (err && err.msg) {
            wx.showToast({
              title: err.msg,
              icon: 'none'
            });
          } else {
            wx.showToast({
              title: '申请排单失败，请重试',
              icon: 'none'
            });
          }
        }
      }
      http.request(params)
    } catch (error) {
      wx.hideLoading();
      console.error('申请排单异常:', error);
      wx.showToast({
        title: '申请异常，请重试',
        icon: 'none'
      });
    }
  }
})